import numpy as np

try:
    import Image
except ImportError:
    from PIL import Image

# ToArray 变换
class ToArray:
    def __init__(self, dtype=np.float32):
        """
        将 PIL 图像转换为 NumPy 数组。

        Args:
            dtype (numpy.dtype): 目标数组的数据类型，默认为 np.float32。
        """
        self.dtype = dtype

    def __call__(self, img):
        """
        执行 ToArray 变换操作。

        Args:
            img (PIL.Image.Image or numpy.ndarray): 待变换的图像。

        Returns:
            numpy.ndarray: 转换后的 NumPy 数组。
        """
        if isinstance(img, np.ndarray):
            return img
        if isinstance(img, Image.Image):
            img = np.asarray(img)
            img = img.transpose(2, 0, 1)
            img = img.astype(self.dtype)
            return img
        else:
            raise TypeError("输入类型不支持")


